package com.hzncc.flowable_diboot.util;

import io.minio.MinioClient;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * minio文件服务工具类
 */
@Component
public class MinioUtil {
    @Value("${minio.endpoint}")
    public String endpoint;

    @Value("${minio.accessKey}")
    public String accessKey;

    @Value("${minio.secretAccessKey}")
    public String secretAccessKey;

    @Value("${minio.defaultBucket}")
    public String bucket;

    @Value("${minio.nginxProxyHost}")
    public String nginxProxyHost;

    public String getEndpoint() {
        return endpoint;
    }

    public String getAccessKey() {
        return accessKey;
    }

    public String getSecretAccessKey() {
        return secretAccessKey;
    }
    /**
     * 获取MinoClient
     * @return
     */
    public MinioClient getClient(){
        return MinioClient.builder()
                .endpoint(endpoint)
                .credentials(accessKey,secretAccessKey)
                .build();
    }

    /**
     * 创建访问链接（存储桶需设置访问权限）
     *
     * @param fileName
     * @param but
     * @return
     * @author 陈广煜
     * @date 2024/5/29
     */
    public String createUrl(String fileName,String but){
        but = StringUtils.isNotBlank(but) ? but : "default";
        return endpoint+"/"+but+"/"+fileName;
    }

    /**
     * 创建访问链接（存储桶需设置访问权限）
     *
     * @param fileName
     * @return
     * @author 陈广煜
     * @date 2024/5/29
     */
    public String createUrl(String fileName){
        return endpoint+"/"+bucket+"/"+fileName;
    }

    // 生成nginx代理访问地址
    public String createNginxUrl(String fileName){
        return nginxProxyHost+"/"+bucket+"/"+fileName;
    }
}
